package gui

import javax.imageio.ImageIO
import javax.swing.Icon
import javax.swing.ImageIcon
import scala.swing.Component

/**
 * Bei diesem TabbedPane handelt es sich um ein
 * MyTabbedPane, welches durch den Benutzer
 * schliessbare Tabs bietet. Hierzu werden
 * ClosableTabComponents verwendet. Diese werden
 * fuer die geoeffneten Dateien im oberen Bereich
 * verwendet.
 */

class TabbedPaneClosable(tt: Layout) extends MyTabbedPane {
  
  peer.addChangeListener(new TabChangeListener(this, tt))
  
  def addTab(title:String, com:Component, icon:String = null) = {
    var c = com.peer

    if(icon != null) {
      var i = new ImageIcon(ImageIO.read(this.getClass().getResource("/gui/img/" + icon)))
      peer.addTab(title, i, c)
      initTabComponent(peer.getTabCount()-1, i)
    }
    else {
      peer.addTab(title,c)
      initTabComponent(peer.getTabCount()-1)
    }
    
    components.append(com)
  }
  
  def initTabComponent(i:Int, icon:Icon = null) = {
    var ct:ClosableTabComponent = null
    if(icon == null)
      ct = new ClosableTabComponent(tt, peer)
    else
      ct = new ClosableTabComponent(tt, peer, icon)
    peer.setTabComponentAt(i, ct)
  }

  def setSelectedIndex(a:Int) : Unit = {
    peer.setSelectedIndex(a)
    for(i <- 0 to peer.getTabCount()-1) {
      if(i != a) {
        var tc = peer.getTabComponentAt(i) match {
          case c:ClosableTabComponent => c
          case _ => throw new ClassCastException
        }
        tc.setInActiv
      }
    }
    if(a != -1) {
      var tc = peer.getTabComponentAt(a) match {
        case c:ClosableTabComponent => c
        case _ => null
      }
      if(tc != null)
        tc.setActiv
    }
  }
  
}


 